package com.foreknow.elm.dao;

import com.foreknow.elm.po.Cart;
import com.foreknow.elm.po.Orders;

import java.sql.SQLException;
import java.util.List;

/**
 * OrdersController/createOrders
 * 参数：userId、businessId、daId、orderTotal
 * 返回值：int（订单编号）
 * 功能：根据用户编号、商家编号、订单总金额、送货地址编号向订单表中添加一条记录，
 * ​           并获取自动生成的订单编号，
 * ​           然后根据用户编号、商家编号从购物车表中查询所有数据，批量添加到订单明细表中，
 * ​           然后根据用户编号、商家编号删除购物车表中的数据。
 * <p>
 * 2. OrdersController/getOrdersById
 * 参数：orderId
 * 返回值：orders对象（包括多对一：商家信息；    一对多：订单明细信息）
 * 功能：根据订单编号查询订单信息，包括所属商家信息，和此订单的所有订单明细信息
 * <p>
 * 3. OrdersController/listOrdersByUserId
 * 参数：userId
 * 返回值：orders数组（包括多对一：商家信息；    一对多：订单明细信息）
 * 功能：根据用户编号查询此用户的所有订单信息
 */
public interface OrdersDao {
    /**
     * 根据用户编号、商家编号、订单总金额、送货地址编号向订单表中添加一条记录，
     * 并获取自动生成的订单编号，
     * @param userId
     * @param businessId
     * @param daId
     * @param orderTotal
     * @return
     */
    public Integer selectByOrdersId(String userId, Integer businessId, Integer daId, Double orderTotal) throws SQLException;
    /**
     * 根据订单编号查询订单信息，包括所属商家信息，和此订单的所有订单明细信息
     * @param orderId
     * @return
     */
   public Orders getOrdersById(Integer orderId) throws SQLException;
    /**
     * 根据用户编号查询此用户的所有订单信息
     * @param userId
     * @return
     */
   public List<Orders> listOrdersByUserId(String userId) throws SQLException;

    /**
     * 修改支付状态
     * @param orderId
     * @return
     */
   public Integer updateState(Integer orderId) throws SQLException;
}
